/*
 * Copyright (c) 2020 hebeiyiliuba.com
 * All rights reserved.
 *
 */
package org.jeecg.modules.third.jg.gd.report;

import org.apache.commons.lang.StringUtils;
import org.jeecg.modules.third.dongjiang.tax.system.utils.HttpUtil;
import org.jeecg.modules.third.jg.gd.report.dto.*;
import org.jeecg.modules.third.jg.report.information.utils.XmlUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

/**
 * 广东网络货运监测平台
 *
 * @author duanlikao
 * @created 2021/7/29
 */
@Service
public class GdMonitoringPlatformService {
    /**
     * test http://219.137.32.205:50080/
     * pro http:// 219.137.32.202:60080/
     */
    private final  String  ApiDomain = "http://219.137.32.205:50080/";

    private final  String  ApiPath =  "wl01-server-http/clientApi";

    private static final Logger LOGGER = LoggerFactory.getLogger(GdMonitoringPlatformService.class);

    /**
     * 推送数据
     * @param url
     * @param objectDTO
     * @return
     */
    private RespDTO sendRepot(String url , Object objectDTO){
        RespDTO apiBaseResDTO = new RespDTO();
        if(objectDTO == null) {
            return apiBaseResDTO;
        }
        String xmlString = XmlUtils.converTomXml(objectDTO);
        try {


            String res = HttpUtil.doNewPost(url, xmlString);
//            LOGGER.info("GdMonitoringPlatformService sendRepot result | {}" , res);
            if(StringUtils.isNotEmpty(res)){
                return XmlUtils.converyToJavaBean(res,RespDTO.class);
            }
        } catch (Exception exception) {
            LOGGER.info("GdMonitoringPlatformService sendRepot Exception |{}" ,exception.getMessage());
        }
        LOGGER.info("GdMonitoringPlatformService sendRepot url | {} Request | {}", url, xmlString);
        return apiBaseResDTO;
    }

    /**
     * 提交网络货运企业信息接口
     * @param carrierDTO
     * @return
     */
    public RespDTO sendCarrier(SubCarrierDTO carrierDTO){
        ReqXmlDTO reqXmlDTO = new ReqXmlDTO();
        reqXmlDTO.setMethodIdentifier(new HeaderDTO().setMethodIdentifier("StShipperService.subCarrier"));
        reqXmlDTO.setSubCarrier(carrierDTO);
        String url = ApiDomain+ApiPath;
        return sendRepot(url, reqXmlDTO);
    }

    /**
     * 电子运单上传接口
     * @param stOrderDTO
     * @return
     */
    public RespDTO sendOrder(StOrderDTO stOrderDTO){
        ReqXmlDTO reqXmlDTO = new ReqXmlDTO();
        reqXmlDTO.setMethodIdentifier(new HeaderDTO().setMethodIdentifier("SyncStOrderService.add"));
        reqXmlDTO.setBody(new SubBodyDTO().setStOrder(stOrderDTO));
        String url = ApiDomain+ApiPath;
        return sendRepot(url, reqXmlDTO);
    }

    /**
     * 提交合同信息接口
     * @param stContractDTO
     * @return
     */
    public RespDTO sendContrac(StContractDTO stContractDTO){
        ReqXmlDTO reqXmlDTO = new ReqXmlDTO();
        reqXmlDTO.setMethodIdentifier(new HeaderDTO().setMethodIdentifier("StShipperService.subMultiContract"));
        reqXmlDTO.setBody(new SubBodyDTO().setStContract(stContractDTO));
        String url = ApiDomain+ApiPath;
        return sendRepot(url, reqXmlDTO);
    }

    /**
     * 批量提交资金流水单接口
     * @param financeFlowDTO
     * @return
     */
    public RespDTO sendFinanceFlow(FinanceFlowDTO financeFlowDTO){
        ReqXmlDTO reqXmlDTO = new ReqXmlDTO();
        reqXmlDTO.setMethodIdentifier(new HeaderDTO().setMethodIdentifier("StFinancialService.subFinancial"));
        reqXmlDTO.setBody(new SubBodyDTO().setFinanceFlow(financeFlowDTO));
        String url = ApiDomain+ApiPath;
        return sendRepot(url, reqXmlDTO);
    }
    /**
     * 提交车辆基本信息接口
     * @param stVehicleDTO
     * @return
     */
    public RespDTO sendVehicle(StVehicleDTO stVehicleDTO){
        ReqXmlDTO reqXmlDTO = new ReqXmlDTO();
        reqXmlDTO.setMethodIdentifier(new HeaderDTO().setMethodIdentifier("StVehicleService.subMultiVehicle"));
        reqXmlDTO.setBody(new SubBodyDTO().setStVehicle(stVehicleDTO));
        String url = ApiDomain+ApiPath;
        return sendRepot(url, reqXmlDTO);
    }

    /**
     * 提交驾驶员基本信息接口
     * @param stDriverDTO
     * @return
     */
    public RespDTO sendDriver(StDriverDTO stDriverDTO){
        ReqXmlDTO reqXmlDTO = new ReqXmlDTO();
        reqXmlDTO.setMethodIdentifier(new HeaderDTO().setMethodIdentifier("StDriverV2Service.subMultiDriver"));
        reqXmlDTO.setBody(new SubBodyDTO().setStDriver(stDriverDTO));
        String url = ApiDomain+ApiPath;
        return sendRepot(url, reqXmlDTO);
    }

    public static void main(String[] args) {

        GdMonitoringPlatformService gdService = new GdMonitoringPlatformService();

//        testDriver(gdService);
//        testVehicle(gdService);
//        testOrder(gdService);
//        testContrac(gdService);

        testFinanceFlow(gdService);


//        String xmlString =  "<root><code>200</code><data><failDriver/><failList/><successDriver>叶文清</successDriver></data> <description></description><isSuccess>true</isSuccess></root>";
//        XmlUtils. dataXmltoEntity(RespDTO.class,xmlString);//
//        RespDTO respDTO  =  XmlUtils.converyToJavaBean(xmlString,RespDTO.class);
//        System.out.println(respDTO);

    }
    static void testFinanceFlow(GdMonitoringPlatformService gdService ){

        FinanceFlowDTO financeFlowDTO = new FinanceFlowDTO();

        financeFlowDTO.setDocumentNumber("202107281704306689753621509")	;//单证号	1..1	an..35	本资金流水单号，流水单唯一性的单号

        financeFlowDTO.setRecCarrier("叶文清");//	实际收款人	1..1	an..512	实际收款人，实际收取运输费的人员，如车队、司机等

        financeFlowDTO.setActualCarrier("叶文清") ;//	实际承运人名称	1..1	an..512	必填，实际承运人。

        financeFlowDTO.setVehicleNumber("冀B2229T")	;//车辆牌照号	1..1	an..35	对应电子运单中车辆牌照号。

        financeFlowDTO.setActualCarrierID("120225198605190516")	;//实际承运人统一社会信用代码或证件号	1..1	an..50	必填，实际承运人统一社会信用代码或者证件号。


        financeFlowDTO.setShippingNoteList(
                new StOrderDTO()
                        .setShippingNoteNumber("YD202107271043430356")
                        .setSerialNumber("0000")
                        .setTotalMonetaryAmount(5425.400d)
        ); //	运单列表	1..n

        financeFlowDTO.setFinancialList(
              new   FinancialListDTO()
                      .setBankCode("ABOC")
                      .setDateTime(20210728170431l)
                      .setMonetaryAmount(5425.400d)
                      .setPaymentMeansCode("4") //银行转账
                      .setReceiptAccount("4911010400434673204373514")
                      .setRecipient("叶文清")
                      .setSequenceCode("202107281704306689753621509")


        ); //财务列表	1..n



        financeFlowDTO.setVehiclePlateColorCode("2");//	车牌颜色代码	1..1	n..2	对应电子运单中车辆颜色代码

        financeFlowDTO.setDocumentName("资金流水单");//	单证名称	1..1	an..35	单证中文名称：

        financeFlowDTO.setPstatus(-1)	 ;//标记状态	1..1	n1	表示网络货运资金流水单的状态，0为需要将流水  单提交给国家，-1表示无需提交国家

        financeFlowDTO.setCarrier("河北一六八网络科技有限公司珠海分公司");//	承运人	1..1	an..512

        financeFlowDTO.setSenderCode("39124") ;//	物流交换代码	1..1	an..20	企业物流交换代码

        RespDTO respDTO =  gdService.sendFinanceFlow( financeFlowDTO);
        System.out.println(respDTO);


    }
    static void testContrac(GdMonitoringPlatformService gdService ){
        StContractDTO stContractDTO = new StContractDTO() ;

        stContractDTO.setContractType(2)	;//合同类型	1..1	n1..1	数字内容，合同类型：1/托运合同(发货人同网络货运签订的合同)，2/实际运输合同(网络货运同实际承运方签订的合同)

        stContractDTO.setContractNo("YD202107271043430356");		//合同号	1..1	an..20	原始单号

        stContractDTO.setDateSigned(20210725174300l)	;//签订日期	1..1	n14	合同签订日期，YYYYMMDDhhmmss

        stContractDTO.setPlaceOfLoadingProvince("内蒙古自治区" )	;//装货地点-省	1..1	an..80	实际装货的地省份，中文名称，参照GB T2260-2013 中华人民共和国行政区划代码

        stContractDTO.setPlaceOfLoadingCity("巴彦淖尔市");//	装货地点-地市	1..1	an..88	实际装货的地级市，中文名称，参照GB T2260-2013 中华人民共和国行政区划代码

        stContractDTO.setPlaceOfLoadingDistrict("乌拉特中旗");//	装货地点-区县	1..1	an..88	实际装货的区县，中文名称，参照GB T2260-2013 中华人民共和国行政区划代码

        stContractDTO.setPlaceOfReceiptProvince("内蒙古自治区")	;//收货地点-省	1..1	an..80	实际收货省份，中文名称，参照GB T2260-2013 中华人民共和国行政区划代码

        stContractDTO.setPlaceOfReceiptCity("包头市")	;//收货地点-地市	1..1	an..88	实际收货地级市，中文名称，参照GB T2260-2013 中华人民共和国行政区划代码

        stContractDTO.setPlaceOfReceiptDistrict("石拐区");//	收货地点-区县	1..1	an..88	实际收货区县，中文名称，参照GB T2260-2013 中华人民共和国行政区划代码

        stContractDTO.setCargoFreight(40000.000d)	;//货运量	1..1	n..20,3	以KG为单位，保留3位小数

        stContractDTO.setContractPeriod(12)	;//合同期限（月）	1..1	n2	合同期限多少个月，比如5个月，则填写就为 5

        stContractDTO.setGoodsType("大宗货物")	;//货物类型	1..1	an..255	货物类型分为电子产品、商品汽车、冷藏货物、大宗货物、快速消费品、农产品、其他等7类

        stContractDTO.setTransportDistance("285.01")	;//运输距离（公里）	1..1	n..19.2	以千米为单位，保留2位小数

        stContractDTO.setContractAmount(00.000d)	;//合同金额（万元）	1..1	n..18,3	货币单位为人民币，保留3位小数，如整数的话，以.000填充。

        stContractDTO.setInsuranceAmount(00.000d)	;//投保额（元）	1..1	n..18,3	货币单位为人民币，保留3位小数，如整数的话，以.000填充。

        stContractDTO.setBusinessType("干线普货运输");//	业务类型	1..1	an..255	业务类型分为干线普货运输、城市配送、农村配送、集装箱运输、港口物流、其他等六类

        stContractDTO.setTypeOfShipping("公路运输");//	运输方式	1..1	an..20	运输方式分为公路运输、铁路运输、水路运输、航空运输、公铁联运、公水联运、水铁联运、陆空联运等

        stContractDTO.setTransportationComb("传统运输")	;//运输组织	1..1	an..20	运输组织分为传统运输、多式联运、甩挂运输、共同配送


        stContractDTO.setContractSubType(1);//	合同大分类	1..1	n1..1	1、单一合同(常见项目类别的合同)，2、子合同

        stContractDTO.setContractTerm("201705-202506")	;//合同期	1..1	an13	合同期填写内容为：年月-年月，比如：201705-201706

        stContractDTO.setCarrier("河北一六八网络科技有限公司珠海分公司");//	承运人	1..1	an..512	网络货运企业名称

        stContractDTO.setSenderCode("39124") ;//	物流交换代码	1..1	an..20	企业物流交换代码

        RespDTO respDTO =  gdService.sendContrac( stContractDTO);
        System.out.println(respDTO);
    }



    static void testOrder(GdMonitoringPlatformService gdService ){
        StOrderDTO stOrderDTO = new StOrderDTO();

        stOrderDTO.setOriginalDocumentNumber("HY202106091503130057");//	原始单号	1..1	an..35	上游企业委托运输单号

        stOrderDTO.setShippingNoteNumber("YD202107271043430356");//	托运单号	1..1	an..20	网络货运电子单号


        stOrderDTO.setConsignmentDateTime(20210727174300l);//	托运日期时间	1..1	n14	网络货运系统正式生成运单的日期时间，YYYYMMDDhhmmss

        stOrderDTO.setDespatchActualDateTime(20210727174300l)	;//发运实际日期时间	1..1	n14	货物装车后的发车时间YYYYMMDDhhmmss

        stOrderDTO.setGoodsReceiptDateTime(20210728093934l)	;//收货日期时间	1..1	n14	货物运到后的签收时间，如签收时间无法确定，填货物运到收货地的时间YYYYMMDDhhmmss

        stOrderDTO.setConsignor("天津中鑫恒国际贸易有限公司")	;//发货人	1..1	an..512	填单位或个人，如集装箱运输业务无法明确实际发货人可填写货代信息

        stOrderDTO.setConsignorID("91120116MA06LAWP2G")	;//托运人统一社会信用代码或个人证件号	1..1	an..35	必填。

        stOrderDTO.setPlaceOfLoadingDeliProvince("内蒙古自治区")	;//装货地点-省份	1..1	an..80	实际装货的省份，中文名称，参照GB T2260-2013 中华人民共和国行政区

        stOrderDTO.setPlaceOfLoadingDeliCity("巴彦淖尔市")	;//装货地点-地市	1..1	an..88	实际装货的地级市，中文名称，参照GB T2260-2013 中华人民共和国行政区

        stOrderDTO.setPlaceOfLoadingDeliDistrict("乌拉特中旗")	;//装货地点-区县	1..1	an..88	实际装货的区县，，中文名称，参照GB T2260-2013 中华人民共和国行政区

        stOrderDTO.setPlaceOfLoadingDeliAddress("港务公司院内八号楼")	;//装货地点-详细地址	1..1	an..512	实际装货的详细地址，必填
        stOrderDTO.setDeliCountrySubdivisionCode("150824")	;//装货地点-区划代码	1..1	an..12	必填，参照GB/T 2260《中华人民共和国行政区划代码》的代码，精确的区县

        stOrderDTO.setConsignee("王建飞")	;//收货人	1..1	an..512	填写单位或个人

        stOrderDTO.setConsigneeID("91120116MA06LAWP2G")	;//收货方统一社会信用代码或个人证件号码	0..1	an..35	选填。

        stOrderDTO.setGoodsReceiptPlaceProvince("内蒙古自治区");//	收货地点-省份	1..1	an..80	实际装货的省份，中文名称，参照GB T2260-2013 中华人民共和国行政区
        stOrderDTO.setGoodsReceiptPlaceCity("包头市")	;//收货地点-地市	1..1	an..88	实际装货的地级市，中文名称，参照GB T2260-2013 中华人民共和国行政区

        stOrderDTO.setGoodsReceiptPlaceDistrict("石拐区")	;//收货地点-区县	1..1	an..88	实际装货的区县，，中文名称，参照GB T2260-2013 中华人民共和国行政区

        stOrderDTO.setGoodsReceiptPlaceAddress("内蒙古自治区包头市石拐区")	;//收货地点-详细地址	1..1	an..512	实际装货的详细地址，必填

        stOrderDTO.setReceiptCountrySubdivisionCode("150205")	;//收货地点-区划代码	1..1	an..12	必填，参照GB/T 2260《中华人民共和国行政区划代码》的代码，精确的区县

        stOrderDTO.setTotalMonetaryAmount(5425.40d)	;//货币总金额（元）	1..1	n..18,3	货币总金额指托运人付给网络货运企业的运输费用，货币单位为人民币，保留3位小数，如整数的话，以.000填充。如是一笔业务分几辆车运，需将托运人针对这笔业务付给网络货运企业的运输费用分摊到每辆车上。

        stOrderDTO.setVehicleNumber("冀B2229T")	;//车辆牌照号	1..1	an..35	必填。


        stOrderDTO.setVehicleDespatchActualDateTime(20210727174300l)	;//发货日期时间	0..1	n14	如果为分段运输必填，本车的发货时间YYYYMMDDhhmmss

        stOrderDTO.setVehicleGoodsReceiptDateTime(20210728093934l)	;//收货日期时 间	0..1	n14	如果为分段运输必填，本车的发货时间YYYYMMDDhhmmss

        stOrderDTO.setVehiclePlaceOfLoadingDeliProvince("内蒙古自治区")	;//装货地点-省份	0..1	an..80	如果为分段运输必填，本车的实际装货的省份，中文名称，参照GB T2260-2013 中华人民共和国行政区

        stOrderDTO.setVehiclePlaceOfLoadingDeliCity("巴彦淖尔市");//	装货地点-地市	0..1	an..88	如果为分段运输必填，本车的实际装货的地级市，中文名称，参照GB T2260-2013 中华人民共和国行政区

        stOrderDTO.setVehiclePlaceOfLoadingDeliDistrict("乌拉特中旗");//	装货地点-区县	0..1	an..88	如果为分段运输必填，本车的实际装货的区县，中文名称，参照GB T2260-2013 中华人民共和国行政区

        stOrderDTO.setVehiclePlaceOfLoadingDeliAddress("港务公司院内八号楼");//	装货地点-详细地址	0..1	an..512	如果为分段运输必填，本车的实际装货的详细地址

        stOrderDTO.setVehicleDeliCountrySubdivisionCode("150824");//	装货地点-区划代码	0..1	an..12	如果为分段运输必填，本车的实际装货的区划代码，参照GB/T 2260《中华人民共和国行政区划代码》的代码，精确的区县

        stOrderDTO.setStDriver(new StDriverDTO().setNameOfPerson("叶文清").setDrivingLicense("120225198605190516")); //驾驶员信息	1..n

        stOrderDTO.setActualCarrier("叶文清")	;//实际承运人信息-实际承运人	1..1	an..256	必填，与网络货运经营者签订运输合同，实际完成运输的经营者。 取得道路运输经营许可证的个体运输业户，直接填写“许可证上的业户名称”；其他情况填写“运输公司名称（合同签订人姓名）”。

        stOrderDTO.setCarrierRegisterPlace("天津市蓟县")	;//实际承运人信息-注册地	1..1	an..512	如果为个体司机，注册地按营运车辆车籍地填写

        stOrderDTO.setCarrierPermitNumber("120225198605190516");//	实际承运人信息-道路运输经营许可证编号	1..1	an..256	必填，实际承运人的道路运输经营许可证编号，网络货运经营者整合车辆全部为总质量4.5吨及以下普通货车车辆的，可填“车籍地6位行政区域代码+000000”。

        stOrderDTO.setActualCarrierID("120225198605190516")	;//实际承运人统一社会信用代码或证件号码	1..1	an..50	必填。

        stOrderDTO.setCarrierBusinessRange("")	;//实际承运人信息-道路运输经营范围	0..1	an..512	企业必填




        stOrderDTO.setCarrierAduitTime(20210730120000l)	;//实际承运人信息-通过平台审核日期	1..1	n14	YYYYMMDDhhmmss

        stOrderDTO.setTransportDistance(285.22d)	;//行驶距离（公里）	0..1	n..9,2	以千米为单位，保留2位小数

        stOrderDTO.setTransportDistance(285.22d);//	运输距离（公里）	1..1	n..9,2	以千米为单位，保留2位小数

        stOrderDTO.setVehiclePlateColorCode("2")	;//车牌颜色代码	1..1	an..2	必填。参照部代码集。

        stOrderDTO.setStOrderGoods(
                new StOrderGoodsDTO()
                        .setCargoTypeClassificationCode("0100")
                        .setCube(1.0000d)
                        .setDescriptionOfGoods("精煤")
                        .setGoodsItemGrossWeight(40000.000d)
                        .setTotalNumberOfPackages(1)
        );//	货物信息	1..n

        stOrderDTO.setActualType("个体")	;//实际承运人信息-企业类型	1..1	an..512	如果为个体司机，企业类型为个体

        stOrderDTO.setSerialNumber("0000");//	分段分单号	1..1	an..4	必填，分段运输和多车运输由四位数字组成，前两位代表一单多车的序号，后两位代表分段序号。若运输形式为一单一车填0000。

        stOrderDTO.setVehicleCount(1);	//运输总车辆数	1..1	n..4	必填，同一运单号的货物总共使用的运输车辆总数。

        stOrderDTO.setTransportTypeCode(1);//	运输组织类型代码	1..1	n..2	必填，参照部代码集。
        stOrderDTO.setTransportationComb("传统运输")	;//运输组织	1..1	an..20	运输组织分为传统运输、多式联运、甩挂运输、共同配送

        stOrderDTO.setCarrier("河北一六八网络科技有限公司珠海分公司")	;//承运人	1..1	an..512	网络货运企业名称

        stOrderDTO.setUnifiedSocialCreditIdentifier("91440400MA56KGJC3P");	//	统一社会信用代码	1..1	an18	必填
        stOrderDTO.setPermitNumber("130524000491")	;//道路运输经营许可证编号	1..1	an..50	必填，网络货运经营者的道路运输经营许可证编号。

        stOrderDTO.setBusinessTypeCode("1002996");//	业务类型代码	1..1	an..7	必填，参照部代码集。

        stOrderDTO.setPolicyNumber("none")	;//保险单号	1..1	an..30	必填，未投保的，可填“none”。

        stOrderDTO.setInsuranceCompanyCode("none")	;//保险公司代码	1..1	an..30	必填，参照部代码集。未投保的，可填“none”。

        stOrderDTO.setRemark("")	;//费用信息备注	0..1	an..256

        stOrderDTO.setPstatus(-1) ;//	运单标记	1..1	n..1	0表示需上传国家平台，-1表示无需上传国家平台。

        stOrderDTO.setFreeText("")	;//自由文本	0..1

        stOrderDTO.setSenderCode("39124")	;//物流交换代码	1..1	an..20	企业物流交换代码


        RespDTO respDTO =  gdService.sendOrder( stOrderDTO);
        System.out.println(respDTO);
    }


    static void testVehicle(GdMonitoringPlatformService gdService ){

        StVehicleDTO stVehicleDTO = new StVehicleDTO();

        stVehicleDTO.setVehicleNumber("冀EU3213");//	车辆牌照号	1..1	an..35	必填。

        stVehicleDTO.setOwner("邢台搏远物流有限公司");		//所有人	0..1	an..128	总质量4.5吨及一下普通货运车辆必填，按照机动车行驶证填写。

        stVehicleDTO.setVIN("LZGJL4V46KX021386");	//车辆识别代号	0..1	an..32	总质量4.5吨及一下普通货运车辆必填，按照机动车行驶证填写。

        stVehicleDTO.setIssuingOrganizations("河北省邢台市公安局交通警察支队");//	发证机关	0..1	an..128	总质量4.5吨及一下普通货运车辆必填，按照机动车行驶证填写。

        stVehicleDTO.setRegisterDate(20190424l);		//注册日期	0..1	n8	总质量4.5吨及一下普通货运车辆必填，按照机动车行驶证填写。YYYYMMDD

        stVehicleDTO.setIssueDate(20190424l);		//发证日期	0..1	n8	总质量4.5吨及一下普通货运车辆必填，按照机动车行驶证填写。YYYYMMDD

        stVehicleDTO.setRoadTransportCertificateNumber("130501034537");	//道路运输证号	1..1	n..20	 必填，总质量4.5

        stVehicleDTO.setOperatingPermitNumber("130555051044"); //营运车辆信息-许可证编号	1..1	an..50	车辆所属业户的道路运输经营许可证编号

        stVehicleDTO.setVehicleAnchored("邢台搏远物流有限公司"); 	//挂靠实际承运人	1..1	an..512



        stVehicleDTO.setVehicleEnergyType("E");	//	车辆能源类型	1..1	an..12	必填，参照部代码集。

        stVehicleDTO.setVehicleTonnage(40.00d);	//	核定载质量	1..1	n..9,2	必填，参考机动车行驶证填写，默认单位：吨，保留两位小数，如整数的话，以.00填充。

        stVehicleDTO.setGrossMass(40.00d);		//吨位	1..1	n..9,2	必填，车辆总质量，默认单位：吨，保留两位小数，如整数的话，以.00填充。


        stVehicleDTO.setVehiclePlateColorCode("2");//车牌颜色代码	1..1	an..2	必填。

        stVehicleDTO.setVehicleType("Q11");//车辆类型代码	1..1	an..3	必填。参考机动车行驶证填写。参照部代码集。

        stVehicleDTO.setUseCharacter("货运");	//使用性质	0..1	an..20	总质量4.5吨及一下普通货运车辆必填，按照机动车行驶证填写。

        stVehicleDTO.setTrailerVehiclePlateNumber("");		//	挂车牌照号	0..1	an..35	选填。

        stVehicleDTO.setVehicleAduitTime(20210730100000l); //营运车辆信息-通过平台审核日期	1..1	an14	YYYYMMDDhhmmss

        stVehicleDTO.setVehicleIsAccident(0);		//运输产生安全事故-是否发生	0..1	n1..1	1、是，0、否， 填写 0或者1

        stVehicleDTO.setVehicleIsAccidentFinished("是");	//运输产生安全事故-是否处理完成	0..1	n1	1、是，0、否， 填写 0或者1

        stVehicleDTO.setVehicleIsInsurance(0); //保险赔付-是否发生赔付	0..1	n1	1、表示是，0表示否  填写 0或者1

        stVehicleDTO.setVehicleIsInsuranceAmount(00.000d);//保险赔付-赔付金额	0..1	n..18,3	以元为单位，保留3位小数

        stVehicleDTO.setVehicleIsService( 0);//服务质量投诉-是否发生	0..1	n1	1、表示是，0表示否  填写 0或者1

        stVehicleDTO.setVehicleIsAccidentFinished("是");//	服务质量投诉-是否处理完成	0..1	n1	1、表示是，0表示否  填写 0或者1

        stVehicleDTO.setRemark("");	;//备注	0..1	an..256	选填。

        stVehicleDTO.setCarrier("河北一六八网络科技有限公司珠海分公司");	//承运人	1..1	an..512	网络货运企业名称

        stVehicleDTO.setSenderCode("39124");	//物流交换代码	1..1	an..20	企业物流交换代码

        RespDTO respDTO =  gdService.sendVehicle( stVehicleDTO);
        System.out.println(respDTO);

    }
    static void testDriver(GdMonitoringPlatformService gdService ){

        StDriverDTO stDriverDTO = new StDriverDTO();
        stDriverDTO.setNameOfPerson("张双林");	;//驾驶员信息-姓名	1..1	an..30	必填。
        stDriverDTO.setDrivingLicense("130107198201202115");	//身份证号	1..1	an..18	必填。
        stDriverDTO.setVehicleClass("A2");//	准驾车型	0..1	an..20	使用总质量4.5吨及以下普通货运车辆从事普通货物运输经营的驾驶员必填，根据机动车驾驶证填写。
        stDriverDTO.setIssuingOrganizations("河北省石家庄市公安局交通管理局");	//驾驶证发证机关	0..1	an..128	使用总质量4.5吨及以下普通货运车辆从事普通货物运输经营的驾驶员必填，根据机动车驾驶证填写。
        stDriverDTO.setValidPeriodFrom(20210125L);	//驾驶证有效期自	0..1	n8	使用总质量4.5吨及以下普通货运车辆从事普通货物运输经营的驾驶员必填，根据机动车驾驶证填写。YYYYMMDD
        stDriverDTO.setValidPeriodTo(20310125L);	//驾驶证有效期至	0..1	n8	使用总质量4.5吨及以下普通货运车辆从事普通货物运输经营的驾驶员必填，根据机动车驾驶证填写。YYYYMMDD
        stDriverDTO.setQualificationCertificateNumber("130107198201202115");	//	从业资格证号	1..1	an..18	必填，驾驶员从业资格证号，使用总质量4.5吨及以下普通货运车辆从事普通货物运输经营的驾驶员，填写“驾驶员身份证前6位+000000000000”。
        stDriverDTO.setTelephoneNumber("13091002278");	//手机号码	1..1	an..18	必填。
        stDriverDTO.setQualificationCertificateType("经营性道路货物运输驾驶员");	//	驾驶员信息-从业资格类别	1..1	an..50	包含经营性道路货物运输驾驶员、道路危险货物运输驾驶员、其他、无等四类
        stDriverDTO.setAduitTime(20210729144800L);	//驾驶员信息-通过平台审核日期	1..1	n14	YYYYMMDDhhmmss
        stDriverDTO.setRemark("");			;//备注	0..1	an..256	选填。
        stDriverDTO.setCarrier("河北一六八网络科技有限公司珠海分公司");//承运人	1..1	an..512	网络货运企业名称
        stDriverDTO.setSenderCode("39124");//物流交换代码	1..1	an..20	企业物流交换代码
        RespDTO respDTO =  gdService.sendDriver( stDriverDTO);
        System.out.println(respDTO);
    }

}
